用一个汽车游戏的例子来介绍一下事件(Event)

您所在的位置:网站首页 1957 slowforward 用一个汽车游戏的例子来介绍一下事件(Event)

用一个汽车游戏的例子来介绍一下事件(Event)

#用一个汽车游戏的例子来介绍一下事件(Event)| 来源: 网络整理| 查看: 265

 

这次的代码更恐怖,一个字 – 长,二个字 – 够长,三个子 – 真是长,哈哈,不过你仔细研究一下还挺有意思的:)

using System;enum MoveRequestType {FastForward, SlowForward, Reverse};class MoveRequestEventArgs : EventArgs{    private MoveRequestType request;    public MoveRequestEventArgs(MoveRequestType initRequest) : base()    {        request = initRequest;    }        public MoveRequestType Request    {        get        {            return request;        }    }}class Car{    private int distance;    private int speedParam;    private string name;        public Car(int initSpeedParam, string initName)    {        speedParam = initSpeedParam;        distance = 0;        name = initName;    }        public void Subscribe(GameController controller)    {        controller.OnMoveRequest += new GameController.MoveRequest(MoveRequestHandler);    }        public void Unsubscribe(GameController controller)    {        controller.OnMoveRequest -= new GameController.MoveRequest(MoveRequestHandler);    }        public void MoveRequestHandler(object sender, MoveRequestEventArgs e)    {        switch (e.Request)        {            case MoveRequestType.SlowForward:                distance += speedParam;                Console.WriteLine("Car name: " + name + " Moving slowly. Distance: " + distance);            break;            case MoveRequestType.FastForward:                distance += speedParam * 2;                 Console.WriteLine("Car name: " + name + " Moving fast. Distance: " + distance);            break;            case MoveRequestType.Reverse:                distance -= 5;                Console.WriteLine("Car name: " + name + " Reversing. Distance: " + distance);            break;        }    }        public override string ToString()    {        return name;       } }class GameController{    public delegate void MoveRequest(object sender, MoveRequestEventArgs e);        public event MoveRequest OnMoveRequest;        Car[] gameCars = new Car[10];    string carName;    int speedParam = 0;    int carCounter = 0;    int carNumber = 0;        public void Run()    {        string answer;        Console.WriteLine("Please select from the following menu: ");        Console.WriteLine("A)dd new car");        Console.WriteLine("C)ar. Subscribe to events");        Console.WriteLine("U)nsubscribe from events");        Console.WriteLine("L)ist cars in current game");        Console.WriteLine("F)ast forward");        Console.WriteLine("S)low forward");        Console.WriteLine("R)everse");        Console.WriteLine("T)erminate");        do        {            Console.WriteLine("Select new option:");            answer = Console.ReadLine().ToUpper();                        switch(answer)            {                case "A":                    Console.Write("Enter name of the new car: ");                    carName = Console.ReadLine();                    Console.Write("Enter car speed parameter of the new car: ");                    speedParam = Convert.ToInt32(Console.ReadLine());                    gameCars[carCounter] = new Car(speedParam, carName);                    carCounter++;                break;                case "C":                    Console.Write("Enter array index of car you want to subscribe to events: ");                    carNumber = Convert.ToInt32(Console.ReadLine());                    gameCars[carNumber].Subscribe(this);                break;                case "U":                    Console.Write("Enter array index of car you want to unsubscribe from events: ");                    carNumber = Convert.ToInt32(Console.ReadLine());                    gameCars[carNumber].Unsubscribe(this);                break;                case "L":                    for(int i=0; i 


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3